// package com.cxy.batch;
//
// import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
// import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
// import com.baomidou.mybatisplus.core.toolkit.Wrappers;
// import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache;
// import com.baomidou.mybatisplus.core.toolkit.support.LambdaMeta;
// import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
// import com.baomidou.mybatisplus.extension.parser.JsqlParserFunction;
// import com.baomidou.mybatisplus.generator.FastAutoGenerator;
// import com.baomidou.mybatisplus.generator.config.OutputFile;
// import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
// import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
//
// import org.apache.ibatis.reflection.property.PropertyNamer;
// import org.springframework.batch.core.launch.JobLauncher;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.stereotype.Component;
//
// import java.sql.Types;
// import java.util.Collections;
// import java.util.Map;
// import java.util.function.Consumer;
// import java.util.function.Function;
//
// /*********************************************************
//  * 文件名称：BatchTest.java
//  * 系统名称：cxycloud
//  * 模块名称：com.cxy.batch
//  * 功能说明：
//  * 开发人员 @author：caoxy
//  * 开发时间 @date：2023/8/23 16:09
//  * 修改记录：程序版本  修改日期  修改人员  修改单号  修改说明
//  *********************************************************/
// @Component
// public class BatchTest {
//
//     @Autowired
//     private JobLauncher jobLauncher;
//
//     // private static ITbtestService TbtestMapper;
//
//     // @Bean
//     // public Step step(){
//     //     new TaskletStepBuilder().
//     // }
//     public static void main(String[] args) {
//         // SFunction<Tbtest,Integer> column = Tbtest::getUserAge;
//         // LambdaMeta meta = LambdaUtils.extract(column);
//         // String fieldName = PropertyNamer.methodToProperty(meta.getImplMethodName());
//         // Class<?> instantiatedClass = meta.getInstantiatedClass();
//         // Map<String, ColumnCache> columnMap = LambdaUtils.getColumnMap(instantiatedClass);
//         //
//         // LambdaQueryWrapper<Tbtest> notNull = Wrappers.lambdaQuery(Tbtest.class)
//         //         .eq(Tbtest::getUserId, "1")
//         //         .ne(Tbtest::getUserAge, 12)
//         //         .isNotNull(Tbtest::getUserName)
//         //         .orderByAsc(Tbtest::getUserAge,Tbtest::getUserId);
//         // Function<Tbtest,Integer> function = Tbtest::getUserAge;
//         //
//         // Tbtest tbtest = new Tbtest();
//         // tbtest.setUserAge(1);
//         // Object apply = function.apply(tbtest);
//         // System.out.println(apply);
//         // getUserAge.accept(tbtest);
//         // System.out.println(sqlSelect);
//         // if (true){
//         //     return;
//         // }
//         FastAutoGenerator.create("jdbc:h2:file:./h2", "h2", "h2")
//                 .globalConfig(builder -> {
//                     builder.author("caoxy") // 设置作者
//                             .enableSwagger() // 开启 swagger 模式
//                             .fileOverride() // 覆盖已生成文件
//                             .outputDir("E:\\myIdeawork\\cxycloud\\cxycloud-start\\src\\main\\java"); // 指定输出目录
//                 })
//                 .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
//                     int typeCode = metaInfo.getJdbcType().TYPE_CODE;
//                     if (typeCode == Types.SMALLINT) {
//                         // 自定义类型转换
//                         return DbColumnType.INTEGER;
//                     }
//                     return typeRegistry.getColumnType(metaInfo);
//
//                 }))
//                 .packageConfig(builder -> {
//                     builder.parent("com.cxy.batch.generator") // 设置父包名
//                             .moduleName("system") // 设置父包模块名
//                             .pathInfo(Collections.singletonMap(OutputFile.xml, "E:\\myIdeawork\\cxycloud\\cxycloud-start\\src\\main\\resources")); // 设置mapperXml生成路径
//                 })
//                 .strategyConfig(builder -> {
//                     builder
//                             // .addInclude("tbtest") // 设置需要生成的表名
//                             .addTablePrefix("t_", "c_"); // 设置过滤表前缀
//                 })
//                 .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
//                 .execute();
//     }
// }
